#include "Pouvoir_private.h"
#include "PouvoirFleche.h"

#include "Des.h"
#include "Personnage.h"
#include "Jeu.h"
#include "JeuCombat.h"
#include "Joueur.h"

Pouvoir* newPouvoirFleche(Personnage* perso){
	Pouvoir* pouvoir;
	
	pouvoir = newPouvoir("Fleche",3,perso);
	pouvoir->appliquer = pouvoirFlecheAppliquer;
	pouvoir->canUseItNow = pouvoirFlecheCanUseItNow;
	
	return pouvoir;
}

#define nbLancers 20
int pouvoirFlecheAppliquer(Pouvoir* pouvoir,Jeu* jeu){
	Personnage* ennemi,* perso;
	List* ennemis;
	Joueur* joueur;
	int vieEnnemi, forceAttaque, i;
	
	if(pouvoirGetType(pouvoir) != tpFleche) return 0;
	if(!pouvoirFlecheCanUseItNow(pouvoir,jeu)) return 0;
	
	perso = pouvoirGetPersonnage(pouvoir);
	joueur = persoGetJoueur(perso);
	
	ennemis = newList();
	
	jeuCombatGetEnnemis(jeu,ennemis);
	ennemi = joueurAskChooseEnnemi(joueur,ennemis);
	
	vieEnnemi = persoGetVie(ennemi);
	
	forceAttaque = 0;
	for(i=0; i<nbLancers; i++){
		forceAttaque += desLancer10();
	}
	persoSetVie(ennemi,vieEnnemi - forceAttaque);
	
	deleteList(ennemis);
	return 1;
}

int pouvoirFlecheCanUseItNow(Pouvoir* pouvoir,Jeu* jeu){
	return (pouvoirGetQuantite(pouvoir) > 0) && (jeuGetMode(jeu) == mjCombat);
}
